package com.bbseguros.pesquisador.action;

import java.util.List;

import org.apache.log4j.Logger;

import com.bbseguros.pesquisador.bean.GruposBean;
import com.bbseguros.pesquisador.middle.GruposMiddle;
import com.opensymphony.xwork2.ActionSupport;

public class GruposAction  extends ActionSupport {

	private static Logger logger = Logger.getLogger(GruposAction.class);

	private static final long serialVersionUID = 1L;
	private GruposBean grupo;
	private List<GruposBean> grupos;
	private String functionType;
	
	public void validate() {
		
		if(getGrupo()!=null) {
			if(getGrupo().getNome()!=null) {
				if (getGrupo().getNome().length() == 0) {
					addFieldError("grupo.nome", getText("nome.required"));
				}
			}
			if (getGrupo().getDescricao()!=null) {	
				if (getGrupo().getDescricao().length() == 0) {
					addFieldError("grupo.descricao", getText("descricao.required"));
				} 	
			}
		}
	}

	public String execute() {
		grupos = GruposMiddle.getAllGroups();
		logger.debug("Execute Done!");
		return "viewAll";
	}
	
	public String novo() {
		setFunctionType("cadastro");
		logger.debug("Novo Done!");
		return "enterData";
	}	
	
	
	public String edit() {
		setFunctionType("update");
		int groupId = getGrupo().getId();

		grupo = GruposMiddle.getGroup(groupId);
		logger.debug("Edit "+groupId+" Done!");
		return "enterData";		
	}	
	
	public String confirmData() {
		logger.debug("Id: "+grupo.getId());
		
		if(grupo.getNome()==null) {
			setFunctionType("delete");
			logger.debug("Recuperando Grupo");
			grupo = GruposMiddle.getGroup(grupo.getId());
		}
		logger.debug("Nome: "+grupo.getNome()+" Desc: "+grupo.getDescricao());
		return "confirmData";
	}
	
	public String insertConfirm() {
		logger.debug("Id: "+grupo.getId());
		logger.debug("Nome: "+grupo.getNome()+" Desc: "+grupo.getDescricao());
		if(GruposMiddle.insertGroup(grupo)){
			logger.debug("INSERT SUCCESS");
			return SUCCESS;	
		}else{
			logger.debug("INSERT ERROR");
			addActionError(getText("grupos.insertError"));
			return ERROR;
		}
	}

	public String updateConfirm() {
		logger.debug("Id: "+grupo.getId());
		logger.debug("Nome: "+grupo.getNome()+" Desc: "+grupo.getDescricao());
		if(GruposMiddle.updateGroup(grupo)){
			logger.debug("UPDATE SUCCESS");
			return SUCCESS;	
		}else{
			logger.debug("UPDATE ERROR");
			addActionError(getText("grupos.updateError"));
			return ERROR;
		}
	}	
	
	public String deleteConfirm() {
		if(GruposMiddle.deleteGroup(grupo.getId())){
			logger.debug("DELETE SUCCESS");
			return SUCCESS;	
		}else{
			logger.debug("DELETE ERROR");
			addActionError(getText("grupos.deleteError"));
			return ERROR;
		}
	}
	
	public GruposBean getGrupo() {
		return grupo;
	}

	public void setGrupo(GruposBean grupo) {
		this.grupo = grupo;
	}

	public List<GruposBean> getGrupos() {
		return grupos;
	}

	public void setGrupos(List<GruposBean> grupos) {
		this.grupos = grupos;
	}

	public String getFunctionType() {
		return functionType;
	}

	public void setFunctionType(String functionType) {
		this.functionType = functionType;
	}
}
